/**
 * 
 */
package it.polimi.c4c.entities;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Collection;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * @author matteo
 *
 */
@SuppressWarnings("serial")

@Entity
@Table(name="Regalo")
public class Regalo implements Serializable {
	
	private int id;
	
	private ChiamataRegalo chiamataRegalo;
	private String descrizione;
	private float prezzo;
	private Calendar istanteProposta;
	private Utente proponente;
	
	private Collection<Voto> listaVoti;

	/**
	 * @return the id
	 */
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	
	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}
	
	/**
	 * @return the chiamataRegalo
	 */
	@ManyToOne(optional = false)
	public ChiamataRegalo getChiamataRegalo() {
		return chiamataRegalo;
	}
	
	/**
	 * @param chiamataRegalo the chiamataRegalo to set
	 */
	public void setChiamataRegalo(ChiamataRegalo chiamataRegalo) {
		this.chiamataRegalo = chiamataRegalo;
	}
	
	/**
	 * @return the descrizione
	 */
	@Column(name = "descrizione", nullable = false)
	public String getDescrizione() {
		return descrizione;
	}
	
	/**
	 * @param descrizione the descrizione to set
	 */
	public void setDescrizione(String descrizione) {
		this.descrizione = descrizione;
	}
	
	/**
	 * @return the prezzo
	 */
	@Column(name = "prezzo", nullable = false)
	public float getPrezzo() {
		return prezzo;
	}
	
	/**
	 * @param prezzo the prezzo to set
	 */
	public void setPrezzo(float prezzo) {
		this.prezzo = prezzo;
	}

	/**
	 * @return the proponente
	 */
	@OneToOne(optional = false)
	public Utente getProponente() {
		return proponente;
	}

	/**
	 * @param proponente the proponente to set
	 */
	public void setProponente(Utente proponente) {
		this.proponente = proponente;
	}

	/**
	 * @return the istanteProposta
	 */
	@Column(name = "istanteProposta", nullable = false)
	@Temporal(TemporalType.TIMESTAMP)
	public Calendar getIstanteProposta() {
		return istanteProposta;
	}

	/**
	 * @param istanteProposta the istanteProposta to set
	 */
	public void setIstanteProposta(Calendar istanteProposta) {
		this.istanteProposta = istanteProposta;
	}

	/**
	 * @return the listaVoti
	 */
	@OneToMany
	public Collection<Voto> getListaVoti() {
		return listaVoti;
	}

	/**
	 * @param listaVoti the listaVoti to set
	 */
	public void setListaVoti(Collection<Voto> listaVoti) {
		this.listaVoti = listaVoti;
	}
	
	
}
